home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d26 / amyprime.arc / BUNNY.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1987-09-07  |  8.1 KB  |  234 lines

  1. 10  '                       B U N N Y . B A S
  2. 20  '                                            Modified 8/10/86 11:18 pm
  3. 30  '
  4. 40  '    BUNNY LETTERS will help a pre-schooler learn the alphabet, by
  5. 50  '    matching pictures with the letters they start with.
  6. 60  '
  7. 70  '    Converted for IBM-PC Screen 1.
  8. 80  '
  9. 90  '    Initialize all variables and arrays.
  10. 100  '
  11. 110  SCREEN 1 : COLOR 0,1 : CLS
  12. 120  LOCATE 7,2 : PRINT "Bunny"; : LOCATE 12,1 : PRINT "Letters";
  13. 130  LOCATE 24,1 : PRINT "  copyright 1985, Computing Specialties";
  14. 140  '
  15. 150  '
  16. 160  '         Poke subroutine ALOAD into memory.
  17. 170  '
  18. 180  DEF SEG : ALOAD= 48000
  19. 190  FOR IB=0 TO  95 : READ BYTE : POKE ALOAD+IB,BYTE : NEXT IB
  20. 200  DATA &H55, &H8B, &HEC, &H8B, &H5E, &H0A, &H8A, &H0F, &HB5, &H00, &H8B, &H77
  21. 210  DATA &H01, &H8B, &H5E, &H08, &H8B, &H07, &H8E, &HC0, &HBF, &H00, &H00, &HA4
  22. 220  DATA &HE2, &HFD, &HB0, &H00, &HAA, &H1E, &H06, &H1F, &H07, &HB0, &H00, &HB4
  23. 230  DATA &H3D, &HBA, &H00, &H00, &HCD, &H21, &H72, &H24, &H8B, &HD8, &HB9, &H07
  24. 240  DATA &H00, &HBA, &H00, &H00, &HB4, &H3F, &HCD, &H21, &H3B, &HC1, &H74, &H05
  25. 250  DATA &HB8, &H0D, &H00, &H75, &H0F, &HBE, &H05, &H00, &H8B, &H0C, &HB4, &H3F
  26. 260  DATA &HBA, &H00, &H00, &HCD, &H21, &HB8, &H00, &H00, &H8B, &H7E, &H06, &H26
  27. 270  DATA &H89, &H05, &HB4, &H3E, &HCD, &H21, &H06, &H1F, &H5D, &HCA, &H06, &H00
  28. 280  '
  29. 290  '           Load the title picture onto the screen.
  30. 300  '
  31. 310  SEG2%=&HB800 : BERR%=0 : FILE$="BUNNY1.PIC" : CALL ALOAD(FILE$,SEG2%,BERR%)
  32. 320  UP$=CHR$(0)+CHR$(72) : DN$=CHR$(0)+CHR$(80)
  33. 330  LT$=CHR$(0)+CHR$(75) : RT$=CHR$(0)+CHR$(77)
  34. 340  DIM A(150),B(150),C(150),D(150),E(150),F(150),G(150),H(150),I(150),J(150)
  35. 350  DIM K(150),L(150),M(150),N(150),O(150),P(150),Q(150),R(150),S(150),T(150)
  36. 360  DIM U(150),V(150),W(150),X(150),Y(150),Z(150),BUNNY(150),RABBIT(150)
  37. 370  DIM XTL(28),YTL(28),XBR(28),YBR(28),LETTER(30),ALPHA(4)
  38. 380  DIM N$(40),T$(14)
  39. 390  M1$= "C4C4E4E4G4G4E2F4F4E4E4D8D8D8D8C2"
  40. 400  M2$= "C4C4E2G4G4E2F2E2D2C2"
  41. 410  M$=M1$+M2$
  42. 420  FOR I=1 TO 7
  43. 430      XTL(I)=23+I*32 : XBR(I)=58+I*32 : YTL(I)=10 : YBR(I)=39
  44. 440      XTL(I+7)=23+I*32 : XBR(I+7)=58+I*32 : YTL(I+7)=50 : YBR(I+7)=79
  45. 450      XTL(I+14)=23+I*32 : XBR(I+14)=58+I*32 : YTL(I+14)=90 : YBR(I+14)=119
  46. 460      XTL(I+21)=20+I*35 : XBR(I+21)=55+I*35 : YTL(I+21)=140 : YBR(I+21)=169
  47. 470  NEXT I
  48. 480  XTL(6)=218 : XBR(22)=89 : XBR(19)=217 : XTL(21)=250 : XBR(26)=232
  49. 490  RANDOMIZE TIMER
  50. 500  '
  51. 510  '           Sort the letters for a new game.
  52. 520  '
  53. 530  FOR I=1 TO 26 : LETTER(I)=I : NEXT I
  54. 540  FOR I=1 TO 50
  55. 550      J=INT(RND*26)+1 : K=INT(RND*26)+1
  56. 560      T=LETTER(J) : LETTER(J)=LETTER(K) : LETTER(K)=T
  57. 570  NEXT I
  58. 580  '
  59. 590  '           Load the pictures and store each one in an array.
  60. 600  '
  61. 610  FOR I=1 TO 7
  62. 620      ON I GOTO 630,680,730,780,830,880,920
  63. 630      GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),A
  64. 640      GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),H
  65. 650      GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),O
  66. 660      GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),V
  67. 670      GOTO 950
  68. 680      GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),B
  69. 690      GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),I
  70. 700      GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),P
  71. 710      GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),W
  72. 720      GOTO 950
  73. 730      GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),C
  74. 740      GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),J
  75. 750      GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),Q
  76. 760      GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),X
  77. 770      GOTO 950
  78. 780      GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),D
  79. 790      GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),K
  80. 800      GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),R
  81. 810      GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),Y
  82. 820      GOTO 950
  83. 830      GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),E
  84. 840      GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),L
  85. 850      GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),S
  86. 860      GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),Z
  87. 870      GOTO 950
  88. 880      GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),F
  89. 890      GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),M
  90. 900      GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),T
  91. 910      GOTO 950
  92. 920      GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),G
  93. 930      GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),N
  94. 940      GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),U
  95. 950  NEXT I
  96. 960  XB=240 : YB=145 : GET (XB,YB)-(XB+25,YB+15),BUNNY
  97. 970  GET (21,59)-(36,84),RABBIT
  98. 980  CLS
  99. 990  '
  100. 1000  '           Clear the screen for a set of five rounds.
  101. 1010  '
  102. 1020  LINE (0,0)-(319,199),2,B : LINE (0,35)-(319,35),2
  103. 1030  FOR N=1 TO 5
  104. 1040  '
  105. 1050  '           Select four letters and place them on the screen
  106. 1060  '
  107. 1070    FOR R=1 TO 4 : ALPHA(R)=LETTER((N-1)*4+R) : NEXT R
  108. 1080    FOR R=1 TO 10 : I=INT(RND*4)+1 : J=INT(RND*4)+1
  109. 1090      T=ALPHA(I) : ALPHA(I)=ALPHA(J) : ALPHA(J)=T
  110. 1100    NEXT R
  111. 1110    FOR J=1 TO 4
  112. 1120      K=LETTER((N-1)*4+J) : L=ALPHA(J)
  113. 1130      LOCATE J*5+3,30 : PRINT CHR$(ASC("A")+L-1);" ";CHR$(ASC("a")+L-1)
  114. 1140      X=55 : Y=J*40+1
  115. 1150      GOSUB 2060 ' PUT PICTURE AT (X,Y) FOR LETTER NUMBER K
  116. 1160    NEXT J
  117. 1170  LOCATE 1,1
  118. 1180  '
  119. 1190  '           Place the pictures in a different order on the left side.
  120. 1200  '
  121. 1210  FOR J=1 TO 4
  122. 1220     K=LETTER((N-1)*4+J)
  123. 1230     FOR I=1 TO 4
  124. 1240       IF ALPHA(I)=K THEN TB=I*40+10
  125. 1250     NEXT I
  126. 1260  XB=95 : YB=J*40+10 : PUT (XB,YB),BUNNY,XOR : XL(J)=XB-1 : YL(J)=YB+5 : XR(J)=XB-1 : YR(J)=YL(J)
  127. 1270  '
  128. 1280  '           Redraw all current lines on the screen and wait for a
  129. 1290  '           key press on the keyboard
  130. 1300  '
  131. 1310  FOR I=1 TO J-1 : LINE (XL(I),YL(I))-(XR(I),YR(I)),1 : NEXT I
  132. 1320  LINE(XL(J),YL(J))-(XR(J),YR(J)),2
  133. 1330  C$=INKEY$ : IF C$="" THEN 1330
  134. 1340  '
  135. 1350  '           A key was pressed, respond to it.
  136. 1360  '
  137. 1370  IF C$=CHR$(27) THEN RUN "MENU"
  138. 1380  IF C$=UP$ THEN YD=-10: GOTO 1470
  139. 1390  IF C$=DN$ THEN YD=+10: GOTO 1470
  140. 1400  IF C$=RT$ THEN XD=+10: GOTO 1470
  141. 1410  IF C$=LT$ THEN XD=-10: GOTO 1470
  142. 1420  IF C$="q" OR C$="Q" THEN RUN "MENU"
  143. 1430  GOTO 1330
  144. 1440  '
  145. 1450  '           Move the bunny in the direction indicated.
  146. 1460  '
  147. 1470  PUT (XB,YB),BUNNY,XOR : LINE(XL(J),YL(J))-(XR(J),YR(J)),0
  148. 1480  IF XB+XD>=95 AND XB+XD<=205 THEN XB=XB+XD : XR(J)=XR(J)+XD
  149. 1490  IF YB+YD>=50 AND YB+YD<=170 THEN YB=YB+YD : YR(J)=YR(J)+YD
  150. 1500  PUT (XB,YB),BUNNY,XOR : XD=0 : YD=0
  151. 1510  WHILE INKEY$<>"" : WEND
  152. 1520  IF XB<>205 OR YB<>TB THEN 1310
  153. 1530  '
  154. 1540  '          The bunny has reached the right letter,
  155. 1550  '          change the line to blue, and put the rabbit on the right side.
  156. 1560  '
  157. 1570  XR(J)=XR(J)+30
  158. 1580  PUT (XB,YB),BUNNY,XOR : PUT (XB+80,YB),BUNNY,PSET
  159. 1590  LINE (XL(J),YL(J))-(XR(J),YR(J)),1
  160. 1600  PLAY "O3C32E32G32O4C8"
  161. 1610  WHILE INKEY$<>"" : WEND
  162. 1620  NEXT J
  163. 1630  '
  164. 1640  '          All lines are connected, put a rabbit on the top of the screen.
  165. 1650  '          Then clear the screen for a new round.
  166. 1660  '
  167. 1670  FOR W=1 TO 500 : NEXT W : PLAY "O4C32E32G32O5C8"
  168. 1680  PUT ((N-1)*60+25,5),RABBIT,PSET
  169. 1690  FOR I=1 TO 2000 : NEXT I
  170. 1700  LINE (1,36)-(318,198),0,BF
  171. 1710  NEXT N
  172. 1720  '
  173. 1730  '          All rabbits are in the top row.  End the game
  174. 1740  '          by playing the alphabet song.
  175. 1750  '
  176. 1760  DATA C4,C4,E4,E4,G4,G4,E2,F4,F4,E4,E4,D8,D8,D8,D8,C2
  177. 1770  DATA C4,C4,E2,G4,G4,E2,F8F8F4,E2,D4D4,C2
  178. 1780  DATA C4,NOW,C4,I'VE,E4,SAID,E4,MY,G4,A,G4,B,E2,C'S.
  179. 1790  DATA F4,WILL,F4,YOU,E4,COME,E4,AND,D4,PLAY,D4,WITH,C2,ME?
  180. 1800  IF N$(1)<>"" THEN GOTO 1830
  181. 1810  FOR K=1 TO 26 : READ N$(K) : NEXT K
  182. 1820  FOR K=27 TO 40 : READ N$(K),T$(K-26) : NEXT K
  183. 1830  FOR K=1 TO 26
  184. 1840    Y=INT(K/7)*40+50: X=(K MOD 7)*40+20
  185. 1850    GOSUB 2060
  186. 1860    IF K>20 THEN LINE (0,199)-(319,199),2
  187. 1870    R=INT(K/7)*5+6 : C=(K MOD 7)*5+4 : LOCATE R,C
  188. 1880    PRINT CHR$(ASC("A")+K-1);" ";CHR$(ASC("a")+K-1);
  189. 1890    PLAY "MFO3"+N$(K)
  190. 1900  NEXT K
  191. 1910  LINE (0,199)-(319,199),2
  192. 1920  LINE (1,1)-(318,34),0,BF
  193. 1930  FOR N=2 TO 3
  194. 1940    LOCATE N,5
  195. 1950    FOR K=1 TO 7
  196. 1960    NK=(N-2)*7+K
  197. 1970      PRINT T$(NK);" "; : PLAY "MFO3"+N$(NK+26)
  198. 1980    NEXT K
  199. 1990  NEXT N
  200. 2000  LINE (1,1)-(318,34),0,BF
  201. 2010  LOCATE 3,5
  202. 2020  FOR I= 1 TO 3000 : NEXT I
  203. 2030  GOTO 980
  204. 2040  REM ---------- SUBROUTINE PLOT PICTURE AT (X,Y) FOR LETTER NUMBER K ----------
  205. 2050  '
  206. 2060      IF K<13 THEN ON K GOTO 2080,2090,2100,2110,2120,2130,2140,2150,2160,2170,2180,2190
  207. 2070      ON K-12 GOTO 2200,2210,2220,2230,2240,2250,2260,2270,2280,2290,2300,2310,2320,2330
  208. 2080      PUT (X,Y),A,PSET : RETURN
  209. 2090      PUT (X,Y),B,PSET : RETURN
  210. 2100      PUT (X,Y),C,PSET : RETURN
  211. 2110      PUT (X,Y),D,PSET : RETURN
  212. 2120      PUT (X,Y),E,PSET : RETURN
  213. 2130      PUT (X,Y),F,PSET : RETURN
  214. 2140      PUT (X,Y),G,PSET : RETURN
  215. 2150      PUT (X,Y),H,PSET : RETURN
  216. 2160      PUT (X,Y),I,PSET : RETURN
  217. 2170      PUT (X,Y),J,PSET : RETURN
  218. 2180      PUT (X,Y),K,PSET : RETURN
  219. 2190      PUT (X,Y),L,PSET : RETURN
  220. 2200      PUT (X,Y),M,PSET : RETURN
  221. 2210      PUT (X,Y),N,PSET : RETURN
  222. 2220      PUT (X,Y),O,PSET : RETURN
  223. 2230      PUT (X,Y),P,PSET : RETURN
  224. 2240      PUT (X,Y),Q,PSET : RETURN
  225. 2250      PUT (X,Y),R,PSET : RETURN
  226. 2260      PUT (X,Y),S,PSET : RETURN
  227. 2270      PUT (X,Y),T,PSET : RETURN
  228. 2280      PUT (X,Y),U,PSET : RETURN
  229. 2290      PUT (X,Y),V,PSET : RETURN
  230. 2300      PUT (X,Y),W,PSET : RETURN
  231. 2310      PUT (X,Y),X,PSET : RETURN
  232. 2320      PUT (X,Y),Y,PSET : RETURN
  233. 2330      PUT (X,Y),Z,PSET : RETURN
  234.